home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / lib / calc / help / mat < prev    next >
Text File  |  1995-07-17  |  4KB  |  103 lines

  1. Using matrices
  2.  
  3.     Matrices can have from 1 to 4 dimensions, and are indexed by a
  4.     normal-sized integer.  The lower and upper bounds of a matrix can
  5.     be specified at runtime.  The elements of a matrix are defaulted
  6.     to zeroes, but can be assigned to be of any type.  Thus matrices
  7.     can hold complex numbers, strings, objects, etc.  Matrices are
  8.     stored in memory as an array so that random access to the elements
  9.     is easy.
  10.  
  11.     Matrices are normally indexed using square brackets.  If the matrix
  12.     is multi-dimensional, then an element can be indexed either by
  13.     using multiple pairs of square brackets (as in C), or else by
  14.     separating the indexes by commas.  Thus the following two statements
  15.     reference the same matrix element:
  16.  
  17.         x = name[3][5];
  18.         x = name[3,5];
  19.  
  20.     The double-square bracket operator can be used on any matrix to
  21.     make references to the elements easy and efficient.  This operator
  22.     bypasses the normal indexing mechanism, and treats the array as if
  23.     it was one-dimensional and with a lower bound of zero.  In this
  24.     indexing mode, elements correspond to the normal indexing mode where
  25.     the rightmost index increases most frequently.  For example, when
  26.     using double-square bracket indexing on a two-dimensional matrix,
  27.     increasing indexes will reference the matrix elements left to right,
  28.     row by row.  Thus in the following example, 'x' and 'y' are copied
  29.     from the same matrix element:
  30.  
  31.         mat m[1:2, 1:3];
  32.         x = m[2,1];
  33.         y = m[[3]];
  34.  
  35.     There are functions which return information about a matrix.
  36.     The 'size' functions returns the total number of elements.
  37.     The 'matdim', 'matmin', and 'matmax' functions return the number
  38.     of dimensions of a matrix, and the lower and upper index bounds
  39.     for a dimension of a matrix.  For square matrices, the 'det'
  40.     function calculates the determinant of the matrix.
  41.  
  42.     Some functions return matrices as their results.  These    functions
  43.     do not affect the original matrix argument, but instead return
  44.     new matrices.  For example, the 'mattrans' function returns the
  45.     transpose of a matrix, and 'inverse' returns the inverse of a
  46.     matrix.  So to invert a matrix called 'x', you could use:
  47.  
  48.         x = inverse(x);
  49.  
  50.     The 'matfill' function fills all elements of a matrix with the
  51.     specified value, and optionally fills the diagonal elements of a
  52.     square matrix with a different value.  For example:
  53.  
  54.         matfill(x,1);
  55.  
  56.     will fill any matrix with ones, and:
  57.  
  58.         matfill(x, 0, 1);
  59.  
  60.     will create an identity matrix out of any square matrix.  Note that
  61.     unlike most matrix functions, this function does not return a matrix
  62.     value, but manipulates the matrix argument itself.
  63.  
  64.     Matrices can be multiplied by numbers, which multiplies each element
  65.     by the number.  Matrices can also be negated, conjugated, shifted,
  66.     rounded, truncated, fraction'ed, and modulo'ed.  Each of these
  67.     operations is applied to each element.
  68.  
  69.     Matrices can be added or multiplied together if the operation is
  70.     legal.  Note that even if the dimensions of matrices are compatible,
  71.     operations can still fail because of mismatched lower bounds.  The
  72.     lower bounds of two matrices must either match, or else one of them
  73.     must have a lower bound of zero.  Thus the following code:
  74.  
  75.         mat x[3:3];
  76.         mat y[4:4];
  77.         z = x + y;
  78.  
  79.     fails because the calculator does not have a way of knowing what
  80.     the bounds should be on the resulting matrix.  If the bounds match,
  81.     then the resulting matrix has the same bounds.  If exactly one of
  82.     the lower bounds is zero, then the resulting matrix will have the
  83.     nonzero lower bounds.  Thus means that the bounds of a matrix are
  84.     preserved when operated on by matrices with lower bounds of zero.
  85.     For example:
  86.  
  87.         mat x[3:7];
  88.         mat y[5];
  89.         z = x + y;
  90.  
  91.     will succeed and assign the variable 'z' a matrix whose
  92.     bounds are 3-7.
  93.  
  94.     Vectors are matrices of only a single dimension.  The 'dp' and 'cp'
  95.     functions calculate the dot product and cross product of a vector
  96.     (cross product is only defined for vectors of size 3).
  97.  
  98.     Matrices can be searched for particular values by using the 'search'
  99.     and 'rsearch' functions.  They return the element number of the
  100.     found value (zero based), or null if the value does not exist in the
  101.     matrix.  Using the element number in double-bracket indexing will
  102.     then refer to the found element.
  103.